map簡單來說就是把對應的陣列做變換,並return一個新的,以下有一個簡單的粒子可以參考一下
let numbers = [1, 2, 3, 4, 5]
let squares = numbers.map { $0 * 2 }
print(squares)
$0表示傳給閉包的第一個參數,當前的參數*2並新增到新的陣列裡面,所以輸出是[2,4,6,8]
filter就是用來篩選陣列中的元素的,只要有滿足條件的就會被被新增到一個新的陣列裡面
let numbers = [1, 2, 3, 4, 5]
let evenNumbers = numbers.filter { $0 % 2 == 0 }
print(evenNumbers)
$0表示傳給閉包的第一個參數,當前的參數如果被2整除就會新增到新的陣列裡面,所以輸出是[2,4]
reduce簡單來說就可以把一個陣列的元素結合成一個值,我們來看以下的例子吧!
let numbers = [1, 2, 3, 4, 5]
let sum = numbers.reduce(0) { $0 + $1 }
print(sum) // 輸出: 15
這邊reduce有給定一個初始值0,這表示累加的起始值,而後面的閉包就是元素的累加,$0代表累加的結果,$1代表陣列中當前的元素接下來我們拆分來看
第一次迭代:$0 是 0,$1 是 1。計算 0 + 1 = 1
第二次迭代:$0 是 1,$1 是 2。計算 1 + 2 = 3
第三次迭代:$0 是 3,$1 是 3。計算 3 + 3 = 6
第四次迭代:$0 是 6,$1 是 4。計算 6 + 4 = 10
第五次迭代:$0 是 10,$1 是 5。計算 10 + 5 = 15
最終,返回累加的成果=15
今天學習了許多swift高階函式的用法,學到有點頭腦昏昏,也不確定甚麼時候或是如何使用,但可以慢慢開始看懂別人如何使用這些函式,也可以漸漸讓自己的程式簡潔許多,增加很多可讀性